home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 011-020 / amok11 / r.o.m. / m2sources / mylongrealconversions.def < prev    next >
Text File  |  1993-11-04  |  2KB  |  47 lines

  1. DEFINITION MODULE MyLongRealConversions;
  2. (*
  3.   Created:   10.02.88 by 
  4.              Stefan Salewski
  5.              Stolper Weg 3
  6.              2160 Stade   West-Germany
  7.              Tel: 04141/61130
  8.              
  9.   Note: compiled with AMIGA Modula-2 System by AMSoft
  10.    
  11.   This Module may be freely copied. But please
  12.   leave my name in. Thanks....Stefan 
  13. *)
  14.  
  15.   VAR fillChar:CHAR; (* normalerweise=Leerzeichen, aber beliebig veraenderbar*)
  16.   
  17.   PROCEDURE StrToReal(str:ARRAY OF CHAR;VAR x:LONGREAL;VAR error:BOOLEAN);
  18.   (* Wandelt einen String in eine LongRealZahl um.
  19.      Ziffer::=('0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9')
  20.      Exponent::=('E' ['+'|'-'] Ziffer [Ziffer | Ziffer Ziffer ])
  21.      str ::={fillChar}['-'|'+'] Ziffer {Ziffer} ['.' Ziffer] {Ziffer} [Exonent]
  22.   
  23.     Wenn str obiges Format hat, ist error= FALSE. x wird bei einem
  24.     Fehler nicht auf Null gesetzt, und kann trotz des Fehlers verwendet werden
  25.     Beispiel: str='   123.-34E12'   ==> x=123.0
  26.               str='-123.81E23g'     ==>x=-123.81E23
  27.   *)            
  28.               
  29.   PROCEDURE RealToStr(x:LONGREAL;VAR str:ARRAY OF CHAR;m,n:INTEGER);
  30.   (* ABS(m) gibt die Anzahl der gueltigen Ziffern an,ABS(n) die Nachkommastellen.
  31.      n ist eingeschraenkt durch m, m wiederum durch HIGH(str).
  32.      Es sollte gelten: ABS(n) < ABS(m) < HIGH(str).
  33.      Ist m negativ, so wird die Zahl linksbuendig, sonst rechtsbuendig in
  34.      str eingetragen. Ist n negativ, so wird Exponetialdarstellung verwendet.
  35.      Der String muss mindesten 10 Zeichen gross sein (-n.mE+abc), sonst
  36.      bricht das Programm ab.
  37.      Ist die Zahl in normaler Notation  zu gross fuer str, so wird die
  38.      Exponentialdarstellung  gewaehlt.
  39.      Beispiel:HIGH(str)=9
  40.      x:=-123.456789 m= 6 n=2   ==> '  -123.45'
  41.      x:=-123.456789 m=-6 n=2   ==> '-123.45  '
  42.      x:=123.456789  m=-6 n=2   ==> ' 123.45  '
  43.      x:=123.456789  m=6  n=-2  ==> ' 1.2E+002'
  44.    *)
  45.    
  46. END MyLongRealConversions.def
  47.